package com.ddw.wotcg.client.threejs.materials;

import com.ddw.wotcg.client.threejs.Shading;
import com.ddw.wotcg.client.threejs.textures.Texture;
import com.google.gwt.core.client.JavaScriptObject;

/**
 * http://mrdoob.github.com/three.js/docs/54/#Reference/Materials/
 * MeshBasicMaterial
 * 
 * @author fungus1487
 * 
 */
public final class MeshBasicMaterial extends Material {
	
	/**
	 * http://mrdoob.github.com/three.js/docs/54/#Reference/Materials/
	 * MeshBasicMaterial
	 * 
	 * @author fungus1487
	 * 
	 */
	public static final class MeshBasicMaterialParameters extends
			JavaScriptObject {
		
		public static native MeshBasicMaterialParameters create() /*-{
			return {};
		}-*/;
		
		protected MeshBasicMaterialParameters() {
		}
		
		public native void setCertexColors(boolean vertexColors) /*-{
			this['vertexColors'] = vertexColors;
		}-*/;
		
		public native void setColor(int color) /*-{
			this['color'] = color;
		}-*/;
		
		public native void setEnvMap(JavaScriptObject envMap) /*-{
			this['envMap'] = envMap;
		}-*/;
		
		public native void setFog(boolean fog) /*-{
			this['fog'] = fog;
		}-*/;
		
		public native void setLightMap(Texture lightMap) /*-{
			this['lightMap'] = lightMap;
		}-*/;
		
		public native void setMorphTargets(boolean morphTargets) /*-{
			this['morphTargets'] = morphTargets;
		}-*/;
		
		public native void setShading(Shading shading) /*-{
			this['shading'] = shading;
		}-*/;
		
		public native void setSkinning(boolean skinning) /*-{
			this['skinning'] = skinning;
		}-*/;
		
		public native void setSpecularMap(Texture specularMap) /*-{
			this['specularMap'] = specularMap;
		}-*/;
		
		public native void setWireframe(boolean wireframe) /*-{
			this['wireframe'] = wireframe;
		}-*/;
		
		public native void setWireframeLinecap(String wireframeLinecap) /*-{
			this['wireframeLinecap'] = wireframeLinecap;
		}-*/;
		
		public native void setWireframeLinejoin(String wireframeLinejoin) /*-{
			this['wireframeLinejoin'] = wireframeLinejoin;
		}-*/;
		
		public native void setWireframeLinewidth(double wireframeLinewidth) /*-{
			this['wireframeLinewidth'] = wireframeLinewidth;
		}-*/;
		
	}
	
	public static native MeshBasicMaterial create(
			MeshBasicMaterialParameters parameters) /*-{
		return new $wnd.THREE.MeshBasicMaterial(parameters);
	}-*/;
	
	protected MeshBasicMaterial() {
	}
	
}
